package masterclient;

import Protocol.ClientObject;
import Protocol.ComProtocol;
import Protocol.ReturnObject;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

/**
 * In deze klasse wordt een dialoog aangemaakt voor het aanmaken van een account
 * @author Erik Uitenbroek, Michael Stevens
 * @since 28-05-2012
 */
public class DialoogAccountCreate extends JDialog implements ActionListener{
    
    //Variabelen van DialoogAccountCreate
    private JPanel panel;
    private JLabel labelName = new JLabel("Username");
    private JLabel labelPassword = new JLabel("Password");
    private JLabel labelRank = new JLabel("Rank");
    private JTextField fieldName = new JTextField(1);
    private JPasswordField fieldPassword = new JPasswordField(1);
    private JButton buttonCreate = new JButton("Create");
    private ComProtocol cp;
    private JComboBox jCombo;
    
    private Masterclient mc;
    
    //Constructor
    public DialoogAccountCreate(Masterclient mc){
        this.mc = mc;
        //Standaard schermgegevens aanmaken
        setTitle("Create new account");
        setSize(320, 275);
        setBackground(Color.WHITE);
        setVisible(false);
        setResizable(false);
        
        buttonCreate.addActionListener(this);
        //Toevoegen van de velden etc.
        createScreen();
    }
    
    /**
    * Methode om het scherm aan te maken
    * @author Erik uitenbroek
    * @since 28-05-2011
    */
    public void createScreen(){
        //Eerst wordt een nieuw Jpanel aangemaakt, deze is zonder layout, alles wordt dus met coordinaten geplaatst
        panel = new JPanel();
        panel.setLayout(null);
        
        //Toevoegen labelName
        labelName.setBounds(10, 20, 70, 20);
        panel.add(labelName);
        
        //Toevoegen fieldName
        fieldName.setBounds(100, 20, 120, 20);
        panel.add(fieldName);
        
        //Toevoegen labelPassword
        labelPassword.setBounds(10, 50, 70, 20);
        panel.add(labelPassword);
        
        //Toevoegen fieldPassword
        fieldPassword.setBounds(100, 50, 120, 20);
        panel.add(fieldPassword);
        
        //Toevoegen labelRank
        labelRank.setBounds(10, 80, 120, 20);
        panel.add(labelRank);
        
        String[] s = {"Normal", "Master"};
        jCombo = new JComboBox(s);        
        jCombo.setBounds(100, 80, 70, 20);
        add(jCombo);
        //Toevoegen dropdownmenu
        //dropdownmenu.setBounds(100,80, 120, 20);
        //panel.add(dropdownmenu);
        
        //Toevogen create button
        buttonCreate.setBounds(10, 110, 75, 20);
        panel.add(buttonCreate);
        
        //Zorgt ervoor dat het panel toegevoegd wordt aan het scherm
        add(panel);
    }
    
    /**
    * Methode om de juiste int terug te geven voor isMaster (1 = master account)
    * @author Michael Stevens
    * @return int met isMaster
    * @since 30-05-2011
    */
    public int isMaster(){
        int m;
        String s = jCombo.getSelectedItem().toString();
        if(s.equals("Master")){
            m = 1;
        }else{
            m = 0;
        }
        return m;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource().equals(buttonCreate)){
            if(fieldName.getText().equals("") || fieldPassword.getText().equals("")){
                mc.getGUI().showMessageD("Please fill out all fields");
            }else{
                mc.getAccountManagement().createUser(fieldName.getText(), mc.getAuth().encrypt(fieldPassword.getText()), isMaster());
                setVisible(false);
            }
        }
    }
    
}
